package com.nuoniu.sibanyun.service.finance;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.dto.ReceivableVerification;
import com.nuoniu.sibanyun.entity.finance.VReceivablePayableMain;
import com.nuoniu.sibanyun.entity.finance.VReceivePaymentPlan;

import java.util.List;

/**
 * <p>
 * 应收单主表 服务类
 * </p>
 *
 * @author 小啊刚
 * @since 2021-04-19
 */
public interface IVReceivablePayableMainService extends IService<VReceivablePayableMain> {

    /**
     * 获取编码
     * @author 小啊刚
     * @date 2021-04-19
     */
    String getCode(String sourceCode);

    /**
     * 保存
     * @author 小啊刚
     * @date 2021-04-19
     */
    void saveReceivable(VReceivablePayableMain receivableMain);

    /**
     * 审核
     * @author 小啊刚
     * @date 2021-04-20
     */
    void examine(Long id, Integer status);

    /**
     * 删除单据
     * @author 小啊刚
     * @date 2021-04-20
     */
    void deleteById(Long id);

    /**
     * 记账
     * @author 小啊刚
     * @date 2021-09-13
     */
    void book(Long id);

    /**
     * 获取应收付核销列表
     * @author 小啊刚
     * @date 2021-09-13
     */
    ReceivableVerification getVerificationList(String dataSource, Integer orderId);

    /**
     * 应收付单据核销
     * @author 小啊刚
     * @date 2021-09-14
     */
    void verification(ReceivableVerification receivableVerification);

    /**
     * 获取计划列表
     * @author 小啊刚
     * @date 2021-10-13
     */
    List<VReceivePaymentPlan> getPlanList(Integer orderId, Integer type);

    /**
     * 提交
     * @author 小啊刚
     * @date 2021-12-18
     */
    void submit(Long id, Integer status);
}
